/*------------------------------------------------------------------------------
 * 							Operaciones
 * 
 * Autor: Ernesto Rodriguez
 * 
 * -----------------------------------------------------------------------------*/
public class operaciones {

	
	public int sumatoria(int inicio){
		
		int resultado = 0;
		
		if(inicio==0){
			return 0;
		}
		else if(inicio>0){
			
			resultado=inicio+sumatoria(inicio-1);
			return resultado;
		}
		else{
			
			resultado=inicio+sumatoria(inicio+1);
			return resultado;
		}
	}
	
	public int factorial(int inicio) throws ExecpcionOperacionInoperable{
		
		int resultado=0;
		
		if(inicio==0){
			return 1;
		}
		else if(inicio>0){
			
			resultado=inicio*factorial(inicio-1);
			return resultado;
		}
		else{
			throw (new ExecpcionOperacionInoperable());
		}
	}
	
	public int multiplicacion(int op1, int op2){
		
		int resultado = 0;
		
		if(op2==0){
			return 0;
		}
		else if(op2>0){
			
			resultado=op1+multiplicacion(op1, op2-1);
			return resultado;
		}
		else{
			
			resultado=-op1+multiplicacion(op1, op2+1);
			return resultado;
		}
	}
	
	public int division(int op1, int op2) throws ExecpcionOperacionInoperable{
		
		int resultado=0;
		
		if(op2<0)
			throw (new ExecpcionOperacionInoperable());
		
		if(op1<=0 || op2<=0){
			return 0;
		}
		
		if(op1-op2<0){
			
			return 0;
		}
		else{
			
			resultado=1+division(op1-op2, op2);
			return resultado;
		}
		
	}
	
	public int potencia(int base, int exp) throws ExecpcionOperacionInoperable{
		
		int resultado = 0;
		
		if(exp==0){
			return 1;
		}
		else if(exp>0){
			
			resultado=base*potencia(base, exp-1);
			return resultado;
		}
		else
			throw(new ExecpcionOperacionInoperable());
	}
}
